import Vue from "vue"
import Router from "vue-router"

Vue.use(Router)

/* Layout */
import Layout from "@/layout"

/**
 参数说明

 // 当设置 true 的时候该路由不会在侧边栏出现 如401，login等页面，或者如一些编辑页面/edit/1
 hidden: true // (默认 false)

 //当设置 noRedirect 的时候该路由在面包屑导航中不可被点击
 redirect: 'noRedirect'

 // 当你一个路由下面的 children 声明的路由大于1个时，自动会变成嵌套的模式--如组件页面
 // 只有一个时，会将那个子路由当做根路由显示在侧边栏--如引导页面
 // 若你想不管路由下面的 children 声明的个数都显示你的根路由
 // 你可以设置 alwaysShow: true，这样它就会忽略之前定义的规则，一直显示根路由
 alwaysShow: true

 name: 'router-name' // 设定路由的名字，一定要填写,不然使用<keep-alive>时会出现各种问题
 meta: {
   roles: ['admin', 'editor'] // 设置该路由进入的权限，支持多个权限叠加
   title: 'title' // 设置该路由在侧边栏和面包屑中展示的名字
   icon: 'svg-name' // 设置该路由的图标，支持 svg-class，也支持 el-icon-x element-ui 的 icon
   breadcrumb: false //  如果设置为false，则不会在breadcrumb面包屑中显示(默认 true)
 }

  详细参数说明参见: https://panjiachen.github.io/vue-element-admin-site/guide/essentials/router-and-nav.html

 */

/**
 * constantRoutes 代表那些不需要动态判断权限的路由，如登录页、404、等通用页面。
 * 我们这里简单化了，只有管理员才能登录，不作角色权限处理了。
 */
const constantRoutes = [{
    path: "/login",
    name: "login",
    component: () => import("@/views/user/Login.vue"),
    hidden: true // 不会在侧边栏出现
  },

  {
    path: "/404",
    component: () => import("@/views/404"),
    hidden: true // 不会在侧边栏出现
  },

  {
    path: "/",
    component: Layout,
    redirect: "/home", //重定向地址，在面包屑中点击会重定向去的地址
    children: [{
      path: "home",
      name: "home",
      component: () => import("@/views/home/Home"),
      meta: {
        title: "首页",
        icon: "el-icon-s-home"
      }
    }]
  },

  {
    path: "/user",
    component: Layout,
    redirect: "/user/list",
    name: "user",
    meta: {
      title: "用户管理",
      icon: "user",
    },
    children: [{
      path: "list",
      component: () => import("@/views/user/UserList.vue"),
      name: "userList",
      meta: {
        title: "用户列表",
        icon: "user",
      },
    },
    ]
  },

  {
    path: "/product",
    component: Layout,
    redirect: "/product/list",
    name: "product",
    meta: {
      title: "商品管理",
      icon: "el-icon-s-help"
    },
    children: [{
        path: "list",
        name: "productList",
        component: () => import("@/views/product/ProductList"),
        meta: {
          title: "商品列表",
          icon: "table"
        }
      },
      {
        path: "image",
        name: "productImageList",
        component: () => import("@/views/product/ProductImageList"),
        hidden: true, // 不会在侧边栏出现
        meta: {
          title: "商品图片",
          icon: "form"
        }
      },
    ]
  },

  {
    path: "/category",
    name: "category",
    component: Layout,
    meta: {
      title: "分类管理",
      icon: "el-icon-bank-card"
    },
    children: [{
      path: "list",
      name: "categoryList",
      component: () => import("@/views/category/CategoryList"),
      meta: {
        title: "商品分类",
        icon: "el-icon-bank-card"
      }
    }, ]
  },



  {
    path: "/order",
    component: Layout,
    redirect: "/order/list",
    name: "order",
    meta: {
      title: "订单管理",
      icon: "el-icon-document"
    },
    children: [{
      path: "list",
      component: () => import("@/views/order/OrderList.vue"),
      name: "orderList",
      meta: {
        title: "订单列表",
        icon: "el-icon-tickets"
      },
    }, ]
  },

  {
    path: "/homeSettings",
    component: Layout,
    redirect: "/homeSettings/homeCarousel/list",
    name: "homeSettings",
    meta: {
      title: "首页配置",
      icon: "el-icon-setting"
    },
    children: [{
        path: "homeCarousel/list",
        name: "homeCarouselList",
        component: () => import("@/views/settings/HomeCarouselList"),
        meta: {
          title: "轮播配置",
          icon: "el-icon-connection"
        }
      },
     
    ]
  },

  {
    path: "/forum",
    component: Layout,
    redirect: "/forum/forum",
    name: "forum",
    meta: {
      title: "论坛管理",
      icon: "el-icon-s-promotion"
    },
    children: [{
      path: "list",
      component: () => import("@/views/forum/ForumReview.vue"),
      name: "ForumReview",
      meta: {
        title: "论坛列表",
        icon: "el-icon-s-promotion"
      },
    }, ]
  },
{
    path: "/review",
    component: Layout,
    redirect: "/review/review",
    name: "review",
    meta: {
      title: "评论管理",
      icon: "el-icon-edit"
    },
    children: [{
      path: "list",
      component: () => import("@/views/review/ReviewList.vue"),
      name: "reviewList",
      meta: {
        title: "评论列表",
        icon: "el-icon-edit"
      },
    }, ]
  },


  // 这个出错404路由必须放在最后!!!
  {
    path: "*",
    redirect: "/404",
    hidden: true // 不会在侧边栏出现
  }
]

const createRouter = () => new Router({
  // mode: "history", // require service support
  scrollBehavior: () => ({
    y: 0
  }),
  routes: constantRoutes
})

const router = createRouter()

// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter() {
  const newRouter = createRouter()
  router.matcher = newRouter.matcher // reset router
}

export default router
